package org.lboot.ufs.utils;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.file.FileNameUtil;
import cn.hutool.crypto.SecureUtil;
import org.lboot.ufs.constant.FileConst;
import org.lboot.ufs.entity.UfsFile;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * @author kindear
 * 网盘工具类
 */
public class UfsUtil {


    public static UfsFile buildFile(MultipartFile t) throws IOException {
        // 获取文件名
        String fileName = t.getOriginalFilename();
        // 简单初始化
        UfsFile file = new UfsFile();
        file.setFileName(fileName);
        // 拓展名
        String extName = FileNameUtil.extName(fileName);
        file.setExtName(extName);
        // 文件类型
        file.setFileType(UfsUtil.getFileType(fileName));
        //文件状态
        file.setStatus(1);
        // 只读状态
        file.setReadOnly(0);
        // 计算md5 和 文件大小
        file.setFileSize(t.getSize());
        file.setMd5(SecureUtil.md5(t.getInputStream()));
        return file;
    }
    /**
     * 获取文件类型
     * @param fileName
     * @return
     */
    public static String getFileType(String fileName){
        String extName = FileUtil.extName(fileName);
        if (FileConst.IMG_FILE.contains(extName)){
            return FileConst.IMG;
        }
        else if (FileConst.DOC_FILE.contains(extName)){
            return FileConst.DOC;
        }
        else if (FileConst.VIDEO_FILE.contains(extName)){
            return FileConst.VIDEO;
        }
        else if (FileConst.MUSIC_FILE.contains(extName)){
            return FileConst.MUSIC;
        }
        else if (FileConst.APP_FILE.contains(extName)){
            return FileConst.APP;
        }
        return "其他文件";
    }

    /**
     * 是否允许创建判断 -- 目前仅允许创建文档
     * @param fileName
     * @return
     */
    @Deprecated
    public static boolean isDoc(String fileName){
        String fileType = getFileType(fileName);
        return fileType.equals(FileConst.DOC);
    }

}
